import unittest
from wc import count_chars, count_words, count_sentences

class TestWcBasicFunctions(unittest.TestCase):
    def test_count_chars(self):
        self.assertEqual(count_chars("Hello"), 5)
        self.assertEqual(count_chars("Hello World!"), 12)
        self.assertEqual(count_chars("  \n\t"), 4)
        self.assertEqual(count_chars(""), 0)

    def test_count_words(self):
        self.assertEqual(count_words("Hello World"), 2)
        self.assertEqual(count_words("Hello, world! 123"), 2)
        self.assertEqual(count_words("   Python is fun   "), 3)
        self.assertEqual(count_words("123!@#$%"), 0)
        self.assertEqual(count_words(""), 0)

    def test_count_sentences(self):
        self.assertEqual(count_sentences("Hi! How are you?"), 2)
        self.assertEqual(count_sentences("Hello!! Bye..."), 2)
        self.assertEqual(count_sentences("No punctuation here"), 1)
        self.assertEqual(count_sentences("A.B.C"), 3)
        self.assertEqual(count_sentences(""), 0)

if __name__ == "__main__":
    unittest.main(verbosity=2)